import unittest

from parameterized import parameterized

import utils
from api.emp_api import EmpApi
from api.login_api import LoginApi


class TestEmp(unittest.TestCase):

    def setUp(self) -> None:
        # 实例化封装的类
        self.token = LoginApi().get_token({"mobile": "13800000001", "password": "123456"})
        self.emp_api = EmpApi(self.token)

    # 员工管理-增，删，改，查
    @parameterized.expand(utils.read_json("emp_case_dara"))
    def test01_emp_manage(self,sql,add_emp,update_exp,exp_success,exp_code,exp_msg):
        # 测试数据初始化
        sql_str = sql
        utils.DBUtil.exe_sql(sql_str)
        # 1.调用封装新增员工的方法，获取响应数据
        add_emp = self.emp_api.add_emp(add_emp)
        add_emp_dict = add_emp.json()

        # 断言
        utils.common_assert(self, add_emp, exp_success, exp_code, exp_msg)
        # 3.调用封装查询员工的方法，获取响应数据
        query_emp = self.emp_api.query_emp(add_emp_dict.get("data").get("id"))
        # 断言
        utils.common_assert(self, query_emp, exp_success, exp_code, exp_msg)
        # 4.调用封装修改员工的方法，获取响应数据
        update_emp = self.emp_api.update_emp(add_emp_dict.get("data").get("id"),update_exp)

        # 断言
        utils.common_assert(self, update_emp, exp_success, exp_code, exp_msg)
        # 5.调用封装删除员工的方法，获取响应数据
        delete_emp = self.emp_api.delete_emp(add_emp_dict.get("data").get("id"))

        # 断言
        utils.common_assert(self, delete_emp, exp_success, exp_code, exp_msg)
